#ifndef _IRENDERER_HPP
#define _IRENDERER_HPP

#include <cstddef> // For size_t
#include "Exception.hpp"
#include "String.hpp"

class RendererException : public ExceptionBase {
public: RendererException(String msg) : ExceptionBase(msg) {}
};

class IRenderer
{
public:
	virtual ~IRenderer() {}
	
	virtual size_t getWidth() const  = 0;
	virtual size_t getHeight() const = 0;
	virtual float  getAspect() const = 0;

	// Update the renderer
	virtual void update()            = 0;
};

class IRendererHandler
{
public:
	virtual ~IRendererHandler() {}
	
	virtual void onFrame(IRenderer* caller) = 0;
};

#endif //_IRENDERER_HPP
